package cn.le.container;

import java.lang.ref.Reference;
import java.lang.ref.ReferenceQueue;
import java.lang.ref.SoftReference;
import java.util.LinkedList;

/**
 * Created by admin on 2017/7/10.
 */
public class VeryBig {

    private static final int SIZE = 10000;
    private long[] la = new long[SIZE];
    private String ident;
    public VeryBig(String id)
    {
        this.ident = id;
    }
    public String toString()
    {
       return ident;
    }
    protected void finalize()
    {
        System.out.println("Finalizing " + ident);
    }
}

class References{

    private static ReferenceQueue<VeryBig> rq = new ReferenceQueue<>();
    public static void checkQueue()
    {
        Reference<? extends VeryBig> inq = rq.poll();
        if(inq != null)
        {
            System.out.println("In queue:"+inq.get());
        }
    }

    public static void main(String[] args)
    {
        int size = 10;
        if(args.length > 0)
        {
            size = new Integer(args[0]);
        }
        LinkedList<SoftReference<VeryBig>> sa = new LinkedList<>();
        for (int i = 0; i < size; i++)
        {
            sa.add(new SoftReference<VeryBig>(new VeryBig("Soft "+i),rq));
            System.out.println("Just created:"+sa.getLast());
        }

    }

}